Cellular telephones m increasingly moving to digital transmission techniques of various types. One digital standard (GSM) has been generally adopted for use in Europe, while another (IS54) is intended for use in North America (a time-division multiple access standard--in addition, code-division multiple access systems are under consideration for North America), with still others such as the Japan Digital Cellular standard under consideration. However, the nature of cellular transmission and reception, often occurring from moving vehicles or pedestrians, gives rise to a variety of channel disturbances. For example, multi-path interference exists when reflections from various objects causes several signal, delayed in time from the original signal, to be received. Therefore, the received digital sequence may not exactly match the transmitted sequence. The digital sequences are sent in "packets" having a desired number of digital bits, which may be fixed, or alternatively variable, in order to compensate for transmission difficulties. For example, the packet may contain a fixed number of "training" bits along with information bits. The above-noted standards require various forms of Forward Error Correction (FEC), by which additional bits are included in the packets to provide a degree of redundancy in transmission, so that errors may be detected and corrected to some degree at the receiving end. The packets may contain digitized voice information or other forms of data, including computer files, video information, etc.
Mobile communication devices, such as mobile digital cellular telephones, often employ digital signal processors for processing and filtering received and transmitted digital signals. Often, a separate chip is provided to implement a Viterbi process for correcting errors or decoding incoming signals. Sometimes the process is implemented in software.
The Viterbi process is a maximum likelihood decoding process that provides forward error correction. The Viterbi process is used in decoding a bit stream sequence of encoded signals or signals which have been corrupted by intersymbol interference or noise. The bit stream may represent encoded information in a telecommunication system transmission through various media with each set of bits representing a symbol instant. In the decoding process, the Viterbi algorithm works back through a sequence of possible bit sequences at each symbol instant to determine which one bit sequence is most likely to have been transmitted. The possible transitions from a bit state at one symbol instant to a bit state at a next, subsequent symbol instant is limited. Each possible transition from one state to a next state may be shown graphically as a trellis and is defined as a branch. A sequence of interconnected branches is defined as a path. Each state can only transition to a limited number of the next states upon receipt of the next bit in the bit stream. Thus, some paths survive and others do not survive during the decoding process. By eliminating those transitions that are not permissible, computational efficiency can be achieved in determining the most likely paths to survive. The Viterbi process typically defines and calculates a branch metric associated with each branch and employs an accumulated branch metric to determine which paths survive and which paths do not survive.
Typically, the Viterbi process is implemented on a chip which is separate from the digital processing chip (or alternatively implemented in software). Incoming signals are first routed to the Viterbi processor for decoding. The decoded signals are then routed to the digital signal processor for further processing.
As mobile communication devices proliferate, there remains a need for a faster, more efficient processing of incoming signals. The Viterbi process (together with other processes used by other types of digital processors in other applications) requires that branch metric calculations be performed. The branch metric calculation involves the computation of either the square or absolute value of the difference between two numbers. In some cases the branch metric may be an 8 bit number; in other cases, the branch metric may be a 16 bit number. Whatever the size of the branch metric, handling of all of the digits of the branch metric can be computationally expensive and time consuming inside the digital processor.